package com.dc.designPattern._14_visitor.impl;

import com.google.common.collect.Lists;

import java.util.List;

/**
 * Description: 访问者模式_数据结构_员工业务报表类
 *
 *  - ObjectStructure
 *  定义当中所提到的对象结构，对象结构是一个抽象表述，它内部管理了元素集合，并且可以迭代这些元素提供访问者访问。
 *
 * @author: gdc
 * @date: 2021/5/14
 * @version 1.0
 */
public class BusinessReport {

    /**
     * 维护一个数据元素集合
     */
    private List<Staff> staffList = Lists.newLinkedList();

    /**
     * 添加员工（数据元素）
     * @param staff             员工
     */
    public void addStaff(Staff staff) {
        staffList.add(staff);
    }

    /**
     * 删除员工(数据元素)
     * @param staff             员工
     */
    public void removeStaff(Staff staff) {
        staffList.remove(staff);
    }

    /**
     * 打印报告信息
     * @param visitor           访问者
     */
    public void showReport(Visitor visitor) {
        for (Staff staff : staffList) {
            staff.accept(visitor);
        }
    }

}
